/*
 * CourseRegistrationCreator.h
 *
 *  Created on: 1 May 2010
 *      Author: Savramis Sartios
 */

#ifndef COURSEREGISTRATIONCREATOR_H_
#define COURSEREGISTRATIONCREATOR_H_
#include <string>
#include <map>
using namespace std;
#include "ICourseRegistrationCreator.h"

/**
 *	This class creates course registration and adds the extras like date and course list
 */
class CourseRegistrationCreator : public ICourseRegistrationCreator{
public:
	CourseRegistrationCreator();
	virtual ~CourseRegistrationCreator();
	/**
	 *	Returns a course registration for a student
	 *	\param	aem	student's aem
	 *	\return	a course registration
	 */
	virtual ICourseRegistration * getCourseRegistration(const string *aem)const;

	/**
	 * 	Adds the creation date of the course registration
	 * 	\param	registration the registration in which the date will be added
	 * 	\param	day	is the month's number of that day. Must be 0< and <31
	 * 	\param	month	the month's number of the year. Must be 0< and <13
	 * 	\param	year	the year which must be >1900
	 * 	\return ICourseRegistration the course registration
	 */
	virtual ICourseRegistration * addDate(ICourseRegistration *registration,const string *day,const string *month,const string *year)const;

	/**
	 *	Adds a course list in a course registration
	 *	\param registration is the registration in which the course list will be added
	 *	\param courses	is a map which holds the course's code and the teacher's code who teach that
	 *	\return	ICourseRegistration	the course registration
	 */
	virtual ICourseRegistration * addCourseList(ICourseRegistration *registration,map<string *,string *> * courses);
};

#endif /* COURSEREGISTRATIONCREATOR_H_ */
